package com.bbcare.followup.plat.service;

import java.util.List;
import java.util.Map;

public interface IHisService {
    public final static String MAPPER_PATIENT_ID = "patientId";
    public final static String MAPPER_PATIENT_NAME = "patientName";
    public final static String MAPPER_GENDER    = "gender";
    public final static String MAPPER_BIRTHDAY  = "birthday";
    public final static String MAPPER_PHONE     = "phone";
    public final static String MAPPER_ADDRESS   = "address";
    public final static String MAPPER_BEDNO     = "bedno";      //患者住院床号。
    public final static String MAPPER_AREA_CODE = "areaCode";   //患者住院病区编码。
    public final static String MAPPER_AREA_NAME = "areaName";   //患者住院病区名称。
    public final static String MAPPER_INDATE    = "indate";     //入院日期。
    public final static String MAPPER_OUTDATE   = "outdate";    //出院日期。
    public final static String MAPPER_DEPTCODE  = "deptCode";  //入院科室编码。
    public final static String MAPPER_DEPTNAME  = "deptName";  //入院科室名称。
    public final static String MAPPER_IN_SEQNO  = "inSeqno";    //入院流水号，一个患者多次入院的流水号是不同的。
    public final static String MAPPER_DOCU_LINK = "docu_link";   //患者的病历文书链接。

    public final static String MAPPER_GENDER_MALE   = "N";
    public final static String MAPPER_GENDER_FEMALE = "F";

    public final static String GUANGER_TENANT_ID    = "gdsdermyyta001";

    /**
     * 查询住院患者列表。
     * @param tenantId
     * @return
     */
    public List<Map<String,Object>> queryInPatientList(final String tenantId);

    /**
     * 查询住院患者详情。
     * @param tenantId
     * @param patientId
     * @return
     */
    public Map<String,Object> queryInPatientInfo(final String tenantId, final String patientId);

    /**
     * 查询患者住院历史列表。
     * @param tenantId
     * @param patientId
     * @return
     */
    public List<Map<String,Object>> queryInPatientHisList(final String tenantId, final String patientId);

    /**
     * 查询住院患者的联系电话。
     * @param tenantId
     * @param patientId
     * @return
     */
    public String queryInPatientPhone(final String tenantId, final String patientId);

    /**
     * 修改住院患者的联系电话。
     * @param phone
     * @param tenantId
     * @param patientId
     * @return
     */
    public int updateInPatientPhone(final String phone, final String tenantId, final String patientId);

    /**
     * 保存住院患者列表。
     * （不同医院的HIS应该不同处理）
     * @param tenantId
     * @param patientList
     */
    public void saveInPatientList(final String tenantId, final List<Map> patientList);

    /**
     * 保存随访系统ID和医院HIS系统ID的映射。
     * @param tenantId
     * @param followupId
     * @param hisId
     * @return
     */
    public int saveIdMapper(final String tenantId, final String followupId, final String hisId);

    /**
     * 查询随访系统患者的医疗文书链接。
     * @param tenantId
     * @param followupId
     * @return
     */
    public String queryDocuLink(final String tenantId, final String followupId);
    public Map<String,Object> queryByCondition(final Map<String,Object> paraMap);


    public List<Map> getPatientListFromSoap(final String soapResponse) throws Exception;
    public Map getPatientInfoFromSoap(final String soapResponse) throws Exception;
    public String getResourceFile(final String templateFilename) throws Exception;
    public String sendMessageToHis(final String hisUrl, final String xmlMsg, final String soapAction) throws Exception;
}
